0%

词向量word2vec

1 前言

​ 2013 年,Mikolov 等人创建 Word2Vec 工具,将 word embedding 带到前台,随后 NLP 领域又出现了各种 embdding,如 Sentence2Vec[1][2]、Doc2Vec[2] 等,似乎 Everything can embdding。下图为大神 Mikolov 等人在论文《Distributed Representations of Sentences and Documents 》提出 sentence2vec(doc2vec) 的两种模型。

2 Word2Vec 应用

  • 作输入特征,如情感分析、文本分类、词性标注、语言翻译
  • 作初始值,作为神经网络的预训练值
  • 语义特性,如语义相似度、query 相关性等

2.1 文本分类

用于将文本转换为计算机能够 “读懂” 的向量——词向量

2.2 电影推荐

基于 Item2Vec 实现的电影推荐 [3]。

2.2.1 推荐满天飞

万能的淘宝

神奇的 B 站

【官方双语/合集】线性代数的本质 - 系列合集(15)

灌水的豆瓣

肖申克的救赎

2.2.2 Item2Vec

  • 何为 Item2Vec?

Item2Vec: Neural Item Embedding for Collaborative Filtering 最早提出 item2vec,论文将 Word2vec 的 Skipgram with Negative Sampling (SGNS)的算法思路迁移到基于物品的协同过滤 (item-based CF) 上,以物品的共现性作为自然语言中的上下文关系,构建神经网络学习出物品在隐空间的向量表示。

  • 算法大致流程

把用户浏览的商品集合等价于 word2vec 中的 word 的序列(句子) ,出现在同一个集合的商品对视为 positive。

  • 优缺点分析

可优化 item2item 的计算,但相似度计算只利用到了 item 共现信息,即是:

  • 忽略了 user 行为序列信息,如买乒乓拍后可能还要买乒乓球
  • 没有建模用户对不同 item 的喜欢程度高低,如喜欢和购买是不同程度的强行为

  • 论文对比实验

论文中通过对比基于 SVD 方法的用户 embedding 对音乐人的类别进行聚类,效果如下,其中同一个颜色的节点表示相同类型的音乐人,图 (a) 是 item2vec 的聚合效果,图 (b) 是 SVD 分解的聚合效果。

2.2.3 源数据

豆瓣用户 UGC 内容 (豆列) 产生推荐列表。豆列共 6 万个,其中包括 10w + 部电影。

什么是豆列?

例子

★ 豆瓣高分电影榜 ★ (上)9.7-8.6 分

数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 豆列信息
{
'list_id': 1741812,
'movie_names': ['盖文·斯通复活', '海滩救护队 第一季', '检查站', '大黄蜂', '战狼2', '海军陆战队员5:杀戮战场', '毁灭者', '难以置信', '审讯', '搏击之王', '忍者神龟2:破影而出', '掠夺者', '姐妹', '生活残骸', '老爸当家', '倒数追击', '摩登原始人:石器时代大乱斗', '死囚大逃杀2', '12回合3:致命禁闭', '球手们 第一季', '怪客', '圣诞追缉令', '海军陆战队员4', '地心历险记3', '海滩游侠'],
'list_name': 'WWE出品以及WWE明星主演电影'
}

// 电影信息
{
'movie_name': '阿甘正传',
'movie_country': '美国',
'movie_time': '1994-06-23(洛杉矶首映)',
'movie_rank': '9.4',
'movie_id': 1292720,
'movie_category': '剧情',
'movie_actors': ['汤姆·汉克斯', '罗宾·怀特', '加里·西尼斯']
}

2.2.4 数据处理

归并统计,降序分配 ID

1
2
3
4
5
6
7
// 电影ID
115946 17030 41909 24312 2644 111606 110034 64776......
389 2644 697 671 1460 1456 2189 5511 5648 22793......

// 电影名字
盖文·斯通复活 海滩救护队 第一季 检查站 大黄蜂 战狼2......
通勤营救 帕丁顿熊2 骑兵团 灭绝 移动迷宫3:死亡解药 五十度飞 游戏之夜......

2.2.5 词向量训练

1
2
3
4
./fasttext skipgram -input ./datas/doulist_0804_09.movie_id -output ./models/fasttext_model_0804_09_skipgram -minCount 5 -epoch 50 -neg 100


./fasttext cbow -input ./datas/doulist_0804_09.movie_id -output ./models/fasttext_model_0804_09_cbow -minCount 5 -epoch 50 -neg 100

感谢

自然语言处理词向量系列至此结束, 本系列为同事周同学与笔者共同学习分析的讲稿, 在此非常感谢周同学对笔者的指导。后续有新的相关学习记录也会同时记录到该系列文章中。

参考资料


The article is not allowed to repost unless author authorized


You can donate to me if the article makes sense to you

Thank you

Welcome to follow my wechat